package com.vf.common.utils;

import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;

import java.util.HashMap;

public class LocationUtils {

    /**
     * 高德地图API密钥
     */
    private static final String KEY = "348b3b15110aed8c66a2e365832957bd";

    /**
     * 通过地址获取地理位置信息
     * 
     * @param address 地址信息
     * @param currentCity 当前城市名称
     * @return 返回地理位置坐标，如果获取失败则返回null
     */
    public static String GetLocationByAddress(String address, String currentCity) {
        System.out.println("地理编码：address=" + address + "，currentCity=" + currentCity);
        try {
            // 创建请求参数
            HashMap parameters = new HashMap(16);
            parameters.put("address", address);
            parameters.put("city", currentCity);
            parameters.put("key", KEY); // APP_CODE_GAODE 高德秘钥

            // 调用高德地图API获取地理信息
            String response = HttpUtil.get("http://restapi.amap.com/v3/geocode/geo", parameters);
            // 解析API响应结果
            JSONObject responseJson = JSONObject.parseObject(response);
            if (responseJson == null) {
                System.err.println("列表信息获取失败，关键字：" + address + "城市：" + currentCity);
                return null;
            }
            // 检查API调用状态
            String status = responseJson.getString("status");
            if (!"1".equals(status)) {
                System.err.println("列表信息获取失败，关键字：" + address + "城市：" + currentCity);
                return null;
            }

            // 解析地理位置数据
            JSONArray jsonArray = responseJson.getJSONArray("geocodes");
            if (jsonArray == null || jsonArray.size() == 0) {
                return null;
            }
            JSONObject object = jsonArray.getJSONObject(0);

            return object.getString("location");
        } catch (Exception ex) {
            System.err.println("调用接口失败！" + ex.getMessage());
            return null;
        }
    }
}
